import { defineStore } from "pinia";
import axios from "../axios";

const commonStore = defineStore({
    id: 'commonStore',
    state: () => ({
        userInfo: localStorage.getItem(process.env.VUE_APP_STORAGENAME) ? JSON.parse(localStorage.getItem(process.env.VUE_APP_STORAGENAME)) : {},
        token: localStorage.getItem(process.env.VUE_APP_TOKEN),
        setting: {
            banner: [], // 幻灯片
            article: [], // 公告
        }
    }),

    actions: {
        init() {
            let thiss = this
            return new Promise((reslove, reject) => {
                axios.get('common.site/init').then(res => {
                    thiss.setting = res.data
                    reslove(res.data)
                }).catch(err => {
                    reject(err.data)
                })
            })
        },

        login(data) {
            let thiss = this
            return new Promise((reslove, reject) => {
                axios.post('Login/login', data).then(res => {
                    console.log("login打印",res.data.token)
                    localStorage.setItem(process.env.VUE_APP_TOKEN, res.data.token)
                    thiss.token = res.data.token
                    reslove(res.data)
                }).catch(err => {
                    reject(err)
                })
            })
        },

        captcha_login (data) { 
            return new Promise((reslove, reject) => { 
                axios.post('Login/sms_login', data).then(res => { 
                    localStorage.setItem(process.env.VUE_APP_TOKEN, res.data.token)
                    reslove(res.data)
                }).catch(err => { 
                    reject(err.data)
                })
            })
        },

        getUserInfo() {
            const thiss = this
            return new Promise((reslove, reject) => {
                axios.get('user.User/info').then(res => {
                    thiss.userInfo = res.data
                    localStorage.setItem(process.env.VUE_APP_STORAGENAME, JSON.stringify(res.data))
                    reslove(res.data)
                }).catch(err => {
                    console.log('userinfo:', err)
                    reject(err.data)
                })
            })
        },

        captcha(payload) {
            return new Promise((resolve, reject) => {
                axios.post('captcha', payload).then((response) => {
                    resolve(response)
                }).catch(function (error) {
                    reject(error)
                })
            })
        },

        sendCode(data) {
            return new Promise((resolve, reject) => {
                axios.post('ajax/smsSend', data).then(res => {
                    resolve(res.data)
                }).catch(err => {
                    reject(err.data)
                })
            })
        },

        logout() {
            const thiss = this
            return new Promise((resolve, reject) => {
                axios.post('Login/logout').then((res) => {
                    thiss.userInfo = {}
                    thiss.token = ''
                    localStorage.removeItem(process.env.VUE_APP_STORAGENAME)
                    localStorage.removeItem(process.env.VUE_APP_TOKEN)
                    resolve(res)
                }).catch(err => {
                    reject(err)
                })
            })
        },

        register(data) {
            return new Promise((reslove, reject) => {
                axios.post('Login/register', data).then(res => {
                    reslove(res.data)
                }).catch(err => {
                    reject(err.data)
                })
            })
        },

        findPass(data) {
            return new Promise((resolve, reject) => {
                axios.post('Login/forgot', data).then(res => {
                    resolve(res.data)
                }).catch(err => {
                    reject(err.data)
                })
            })
        },

        // 下单
        pay(data) {
            // return new Promise((reslove, reject) => {
            //     axios.post('pay', data).then(res => {
            //         reslove(res.data)
            //     }).catch(err => {
            //         reject(err.data)
            //     })
            // })
            data
        }
    }
})

export default commonStore